package com.cskaoyan.javase.array._1basic._1initialization;

/**
 * @description: 数组的初始化
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 类比于基本数据类型变量的初始化,数组的初始化在做什么呢?
 *      1,必须指出数组的长度,这样才能开辟空间存放元素
 *      2,数组当中的元素的取值必须给出,如果没有值,数组也没有意义
 * 数组的初始化的语法:
 *      1,静态初始化,表示直接给出数组当中元素的取值,间接指出了长度
 *          数据类型[] 数组名 = new 数据类型[]{元素1,元素2.....};
 *          数组的静态初始化有简写形式:
 *              数据类型[] 数组名 = {元素1,元素2...};
 *          需要注意的是,简写形式必须和声明写在一起,不能直接赋值
 *
 *      2,动态初始化,表示给出数组的长度,但是不给出数组元素的取值
 *          数据类型[] 数组名 = new数据类型[数组的长度];
 *          注意: 数组当中的元素具有默认值
 *
 *      3,数据的初始化只有两种方式,没有第三种,经典错误: "动静结合"
 *
 *
 * 数组在声明过程中,开辟空间,存放元素,开辟的是什么空间,谁的空间?
 * 开辟的是JVM的空间,数组存储在JVM内存当中
 *
 */
public class Demo {
    public static void main(String[] args) {
        //声明静态初始化一个int数组
        int[] arr = new int[]{}; //此数组是一个空数组,它的长度是0
        int[] arr2 = new int[]{1, 2, 3}; //数组长度为3,元素分别是1,2,3
        //静态初始化简写:
        int[] arr3 = {4, 5, 6};
        //arr3 = {6,7,8,8}; 错误的

        //动态初始化一个数组
        String[] arr4 = new String[3];

        //"动静结合"
        //int[] arr5 = new int[3]{1,2,3};
    }
}
